/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package paquetevistas.compra;

import controlador.almacen.controladoralmacen;
import controlador.compra.controladorcompra;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.AbstractTableModel;
import modelos.Producto;
import modelos.Productoxproveedor;
import modelos.Proveedor;
import paquetevistas.Escritorio;
import static paquetevistas.compra.BuscarProveedor.prodsxprov;

/**
 *
 * @author Jacklin
 */
public class ProductosProveedor extends javax.swing.JInternalFrame {

    /**
     * Creates new form ProductosProveedor
     */
    public static controladorcompra mycontroladorcompra = new controladorcompra();
    public static ModificarProductoaProveedor productoProveedor;
    ProductsxSupplierTableModel myProductsxSupplierTableModel = new ProductsxSupplierTableModel();
    public static controladoralmacen mycontroladoralmacen = new controladoralmacen();
    public static Productoxproveedor productosxprovamodificar;
    public static ModificarProductoaProveedor productosxprovaModificar;

    void refreshProductsxSupplierTable() {
        myProductsxSupplierTableModel.prodsxprov = lbj.LBJ.Login.escritorio.proveedor.prodsxprov;
        myProductsxSupplierTableModel.fireTableChanged(null);
    }

    void refreshProductsxSupplierTable(List<Productoxproveedor> prodsxprov) {
        myProductsxSupplierTableModel.prodsxprov = prodsxprov;
        myProductsxSupplierTableModel.fireTableChanged(null);
    }

    class ProductsxSupplierTableModel extends AbstractTableModel {

        List<Productoxproveedor> prodsxprov = new ArrayList<Productoxproveedor>();

        public ProductsxSupplierTableModel() {
            prodsxprov = lbj.LBJ.Login.escritorio.proveedor.prodsxprov;
        }
        String[] titles = {"Proveedor", "Ruc", "Producto", "Cantidad", "Precio (S/.)"};

        public int getRowCount() {
            return prodsxprov.size();
        }

        public int getColumnCount() {
            return 5;
        }

        public Object getValueAt(int rowIndex, int columnIndex) {
            String res = null;
            Productoxproveedor prodsxprov2 = prodsxprov.get(rowIndex);
            Integer idprov = prodsxprov2.getProveedor().getIdproveedor();
            Integer idprod = prodsxprov2.getProducto().getIdproducto();

            Proveedor prov = mycontroladorcompra.sacaproveedorbyid(idprov);
            Producto prod = mycontroladoralmacen.sacaproductobyid(idprod);

            String razonprov = prov.getRazonsocial();
            String nomprod = prod.getNombre();

            switch (columnIndex) {
                case 0:
                    res = "" + razonprov;
                    break;
                case 1:
                    res = "" + prov.getRuc();
                    break;
                case 2:
                    res = "" + nomprod;
                    break;
                case 3:
                    if (prodsxprov2.getCantidadmaxima() == null) {
                        res = "";
                    } else {
                        res = "" + prodsxprov2.getCantidadmaxima();
                    }
                    break;
                case 4:
                    if (prodsxprov2.getPrecio() == null) {
                        res = "";
                    } else {
                        res = "" + prodsxprov2.getPrecio();
                    }
                    break;
            }
            return res;
        }

        public String getColumnName(int col) {
            return titles[col];
        }
    }

    public ProductosProveedor() {
        initComponents();
        jTable1.setModel(myProductsxSupplierTableModel);
        refreshProductsxSupplierTable();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLayeredPane1 = new javax.swing.JLayeredPane();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jLayeredPane2 = new javax.swing.JLayeredPane();
        jButton1 = new javax.swing.JButton();
        jLabel9 = new javax.swing.JLabel();

        setClosable(true);
        setIconifiable(true);
        setTitle("Productos del Proveedor ");

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null}
            },
            new String [] {
                "Ruc", "Proveedor", "Producto", "Cantidad", "Precio (S/.)"
            }
        ));
        jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTable1MouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(jTable1);

        jLayeredPane1.add(jScrollPane1);
        jScrollPane1.setBounds(20, 20, 380, 90);

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/trash.png"))); // NOI18N
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        jLayeredPane2.add(jButton1);
        jButton1.setBounds(10, 10, 59, 39);

        jLabel9.setText("Eliminar");
        jLayeredPane2.add(jLabel9);
        jLabel9.setBounds(20, 60, 70, 14);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 415, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLayeredPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 0, 0))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLayeredPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 122, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(34, 34, 34))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MouseClicked
        // TODO add your handling code here:
//        if (productoProveedor == null || productoProveedor.isClosed()) {
//            productoProveedor = new ModificarProductoaProveedor();
//            Escritorio.proveedor.getDesktopPane().add(productoProveedor);
//            productoProveedor.setVisible(true);
//        } else {
//            try {
//                productoProveedor.setSelected(true);
//            } catch (Exception e) {
//            }
//        }

        if (evt.getClickCount() == 2) {
            int row = jTable1.getSelectedRow();
            Long rucprov = Long.parseLong(jTable1.getValueAt(row, 1).toString());
            String nomprod = jTable1.getValueAt(row, 2).toString();
            Proveedor proveedor = mycontroladorcompra.sacaproveedorbyruc(rucprov);
            Producto producto = mycontroladoralmacen.sacaproductobynombre(nomprod);
            Integer idprov = proveedor.getIdproveedor();
            Integer idprod = producto.getIdproducto();
            productosxprovamodificar = mycontroladorcompra.sacaproductoxproveedor(idprov, idprod);
            productosxprovaModificar = new ModificarProductoaProveedor();
            Escritorio.proveedor.getDesktopPane().add(productosxprovaModificar);
            productosxprovaModificar.setVisible(true);
        }
    }//GEN-LAST:event_jTable1MouseClicked

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
//        int row = jTable1.getSelectedRow();
//        Integer idprov = (Integer) jTable1.getValueAt(row, 0);
//        Integer idprod = (Integer) jTable1.getValueAt(row, 1);
//        Productoxproveedor prodxprov = mycontroladorcompra.sacaproductoxproveedor(idprov,idprod);
//        for (int i = 0; i < myProductsxSupplierTableModel.prodsxprov.size(); i++) {
//            if ((prodxprov.getProducto() == myProductsxSupplierTableModel.prodsxprov.get(i).getProducto())&&
//                    (prodxprov.getProveedor() == myProductsxSupplierTableModel.prodsxprov.get(i).getProveedor())) {
//                myProductsxSupplierTableModel.prodsxprov.remove(i);
//                break;
//            }
//        }

        int row = jTable1.getSelectedRow();
        if (row < 0) {
            JOptionPane.showMessageDialog(null, "Debe seleccionar una fila de la tabla");
        } else {
            if (JOptionPane.showConfirmDialog(rootPane, "¿Desea realmente eliminar este producto?",
                    "Mensaje", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                Long rucprov = Long.parseLong(jTable1.getValueAt(row, 1).toString());
                String nomprod = jTable1.getValueAt(row, 2).toString();
                Proveedor proveedor = mycontroladorcompra.sacaproveedorbyruc(rucprov);
                Producto producto = mycontroladoralmacen.sacaproductobynombre(nomprod);
                Integer idprov = proveedor.getIdproveedor();
                Integer idprod = producto.getIdproducto();
                Productoxproveedor prodxprov = mycontroladorcompra.sacaproductoxproveedor(idprov, idprod);
                mycontroladorcompra.eliminarprodxprov(prodxprov);
                List<Productoxproveedor> prodsxprov = mycontroladorcompra.sacaprodxprovbyid(idprov);
                refreshProductsxSupplierTable(prodsxprov);
                JOptionPane.showMessageDialog(this, "El producto asociado al proveedor se eliminó correctamente");
                //TextilMain.myLoginFrame.myMainFrame.myMPIFrame.refreshProductTable();
            }
        }
    }//GEN-LAST:event_jButton1ActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JLayeredPane jLayeredPane1;
    private javax.swing.JLayeredPane jLayeredPane2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration//GEN-END:variables
}
